#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "bit_map.h"

/*
* Efface un fichier de l'image 
* Le premier caractère du fichier est mis a 0
* les bits du bitmap sont mis a 0
*/

int main(int argc, char *argv[])
{
    FILE* nom_fic = NULL;
    char nom_fichier[80];
    
    int caractereActuel = 0;
    int pos=0, data1=0,data2=0, data=0; 

    // stockage des donnees issues de la ligne de commandes
    if(argc != 3){
        printf("Usage : picosdel file_system_name file_name\n");
        exit(1);
    }
 
    nom_fic = fopen(argv[1], "r+");            // lecture + ajout
    if (nom_fic != NULL)
    {
        // Boucle de lecture des premiers caractères des 64 secteurs de File Entry
        int i=0;
        long cursor=0;
        for(i=1;i<=64;i++)
        {
            fseek(nom_fic, i*512, SEEK_SET); // Le code suivant place le curseur deux caractères après le début :
            caractereActuel = fgetc(nom_fic); // On lit le caractère
            //fseek(nom_fic, +1, SEEK_CUR); //Le code suivant place le curseur quatre caractères avant la position courante :
            if(caractereActuel != 0)
            {
                cursor = ftell(nom_fic); // retient la position du curseur (1 octet après le début du secteur)

                // boucle de lecture du nom complet du fichier
                do
                {
  		    nom_fichier[pos++] = caractereActuel;
                    caractereActuel = fgetc(nom_fic); // On lit le caractère
                } while(caractereActuel != 0);
		nom_fichier[pos] = caractereActuel;
		pos=0;
		if (strcmp(argv[2],nom_fichier) == 0) {
	           printf("fichier effacé\n");
                   /* change le premier caractère du nom en 0 */
                   fseek(nom_fic,i*512,SEEK_SET);    // position début du nom
                   fputc(0,nom_fic);
		// recherche de la liste chaînée 
		   fseek(nom_fic, i*512 + OFFSET_CHAINE, SEEK_SET);
                   do {
                       data1= fgetc(nom_fic);   
                       data2= fgetc(nom_fic);
                       data = data1 | (data2 >> 8); // concétation 2 valeurs
                          if (data) {              // valeur différente de 0
                            reset_BitMap(data,nom_fic);       // chanle bitMap
                          }
                    } while (data != 0);
		}
//		else 
//		   printf("fichier inexistant\n");

            }
            fseek(nom_fic, cursor, SEEK_SET);
        }
   
        fclose(nom_fic);
    }
    else
    {
        printf("Impossible d'ouvrir le fichier %s\n", argv[1]);
    }

    return 0;
}





//long ftell(FILE* pointeurSurFichier); // debug
